/* 全局头文件：包含要用到的所有的C++头文件 */
#ifndef __GLOBAL_H__
#define __GLOBAL_H__

#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <algorithm> // 洗牌算法
#include <unistd.h>  // sleep
#include <memory>    // 智能指针
#include <limits>    // numeric_limits 用于处理输入

// 宏定义
// '\'的含义是下一行依旧受宏定义影响
// ##表示以变量名拼接字符串
#define DEFINE_MEMBER(name, type)                    \
private:                                             \
    type name;                                       \
                                                     \
public:                                              \
    void Set##name(type name) { this->name = name; } \
    type Get##name() const { return this->name; }

using CStrRef = const std::string &; // 常字符串引用

#define WIDTH 16
#define HEIGHT 10
extern int FloorFlag;

#endif